package com.blueocean_health.care.management.service;

import java.util.List;
import java.util.Map;

import com.blueocean_health.care.management.domain.base.SysResult;
import com.blueocean_health.care.management.domain.dto.TeamListDto;
import com.blueocean_health.care.management.domain.vo.OrgAndProjectTreeParam;
import com.blueocean_health.care.management.domain.vo.OrganizationVo;
import com.blueocean_health.care.management.domain.vo.Param;
import com.blueocean_health.care.management.domain.vo.TeamVo;
import com.github.pagehelper.PageInfo;

/**
* 组织模块service 
* @author huyanqiu
* @date 2018年3月20日 下午2:31:20
* @version 版本号：1.0
*/
public interface OrganizationService {

	/**
	 * 创建组织
	 * @param organizationVo
	 * @return
	 */
	void add(OrganizationVo organizationVo);

	/**
	 * 编辑组织
	 * @param organizationVo
	 * @return
	 */
	void modify(OrganizationVo organizationVo);

	/**
	 * 启用/禁用组织
	 * @param id
	 * @param status
	 * @return
	 */
	void status(Integer id, Integer status);

	/**
	 * 获取组织详情
	 * @param id
	 * @return
	 */
	TeamVo query(Integer id);

	/**
	 * 获取组织列表
	 * @param organizationListDto
	 * @return
	 */
	PageInfo<OrganizationVo> list(TeamListDto TeamListDto);

	/**
	 * 获取组织架构树
	 * @return
	 */
	List<Param> tree();

	/**
	 * 获得组织项目架构图
	 * @return
	 */
	SysResult orgAndProjectTree();

	/**
	 * 获得登录人所在组织下的组织/项目架构图
	 * @return
	 */
	List<OrgAndProjectTreeParam> findAllSubOrgAndProjectByOrgId();
	/**
	 * 删除组织
	 * @param id
	 */
	void delete(Integer id);
	/**
	 * 编辑组织之前--判断是否被下级占用
	 * @param organizationVo
	 * @return
	 */
	List<Map<String, String>> modifyBefore(OrganizationVo organizationVo);
}
